﻿--1. store thực hiện giao dịch tính điểm
-- các trường hợp:
-- a. chỉ là tích lũy điểm thông thường
-- b. chỉ là khuyến mãi thông thường
-- c. cả 2 phần trên 

declare
@maGD VARCHAR(14),
@maKH varchar(14),
@maDN varchar(14),
@maLoaiGD VARCHAR(4),
@giaTriGD int,
@thongTinGD nvarchar(1000),
@ghiChu nvarchar(1000),
@soDiemTL int,
@resCode VARCHAR(10),
@message nvarchar(1000)

-- func_tinhDiemVaLuatTichLuy
-- SELECT * FROM dbo.DOANHNGHIEP
-- SELECT * FROM dbo.LUATTICHLUYDIEM
-- testcase 1:
--SET @maDN = 'DN0001'
--SET @giaTriGD = 0;
--SELECT * FROM func_tinhDiemVaLuatTichLuy(@maDN, @giaTriGD);

---- hạn mức thứ 1 [50000, 200000) ti le 0.2
--SET @giaTriGD = 50000;
--SELECT * FROM func_tinhDiemVaLuatTichLuy(@maDN, @giaTriGD);

---- hạn mức thứ 2 [200000, NULL) ti le 0.4
--SET @giaTriGD = 500000;
--SELECT * FROM func_tinhDiemVaLuatTichLuy(@maDN, @giaTriGD);

---- doanh nghiệp ngừng tích lũy điểm, tình trạng = false
--SET @maDN = 'DN0002'
--SELECT * FROM func_tinhDiemVaLuatTichLuy(@maDN, @giaTriGD);


-- stored proc sp_thanhToanTichluyDiem
SELECT * FROM dbo.GIAODICH
SELECT * FROM dbo.DIEMTICHLUY
SELECT * FROM dbo.DOANHNGHIEP
SELECT * FROM dbo.KHACHHANG
-- đầu vào hợp lệ
SET @maDN = 'DN0001';
SET @maKH = 'KH0001';
SET @maLoaiGD = 'LGD1';
SET @giaTriGD = 100000;
SET @thongTinGD = N'hell mọi người';
SET @ghiChu = N'thành côg';
SET @soDiemTL = NULL;
EXEC sp_thanhToanTichluyDiem '123',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- khách hàng k tồn tại
SET @maKH = 'KH0011';
EXEC sp_thanhToanTichluyDiem '124',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- dnghieep k tồn tại
SET @maDN = 'DN0011';
SET @maKH = 'KH0001';
EXEC sp_thanhToanTichluyDiem '124',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- loai gd k tồn tại
SET @maDN = 'DN0001';
SET @maLoaiGD = 'LG71';
EXEC sp_thanhToanTichluyDiem '128',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- gia trị gd 1
--giao dich nay thanh cong nhung khong co diem tich luy
SET @maLoaiGD = 'LGD1';
SET @giaTriGD = 1;
EXEC sp_thanhToanTichluyDiem '124',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- gia tri gd <0 
SET @maLoaiGD = 'LGD1';
SET @giaTriGD = -1;
EXEC sp_thanhToanTichluyDiem '125',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- số điểm tl <0
SET @giaTriGD = 50000;
SET @soDiemTL = -1;
EXEC sp_thanhToanTichluyDiem '125',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- số điểm tl null

-- số điểm tl =0
SET @giaTriGD = 50000;
SET @soDiemTL = 0;
EXEC sp_thanhToanTichluyDiem '125',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)

--2.Store thực hiện 1 giao dịch có voucher giảm giá (nhập voucher)

-- function func_kiemTraVoucher
-- select * from voucher
--SELECT * FROM dbo.GIAODICH
declare
@maGD VARCHAR(14),                                                                                                                                                                                                                                                        3 ,,
@maKH varchar(14),
@maDN varchar(14),
@maLoaiGD VARCHAR(4),
@giaTriGD int,
@thongTinGD nvarchar(1000),
@ghiChu nvarchar(1000),
@soDiemTL int,
@resCode VARCHAR(10),
@message nvarchar(1000),
@maVC VARCHAR(14)

SET @maDN = 'DN0001';
-- voucher nay chua toi han su dung
--SET @maVC = 'VC0001';
--SELECT dbo.func_kiemTraVoucher(@maDN, @maVC);

-- thoa dkien
--SET @maVC = 'VC0006';
--SELECT dbo.func_kiemTraVoucher(@maDN, @maVC);

-- store sp_thanhToanVoucher
--SELECT * FROM VOUCHER
--SELECT * FROM dbo.KHACHHANG
--SELECT * FROM dbo.DOANHNGHIEP
--SELECT * FROM dbo.DIEMTICHLUY
--SELECT * FROM GIAODICH
-- đầu vào hợp lệ
SET @maDN = 'DN0001';
SET @maKH = 'KH0001';
SET @maLoaiGD = 'LGD1';
SET @giaTriGD = 100000;
SET @thongTinGD = N'hell0 mọi người';
SET @ghiChu = N'thành công';
SET @soDiemTL = NULL;
SET @maVC = 'VC0006'
--EXEC sp_thanhToanVoucher '133',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @maVC, @resCode OUTPUT, @message output
--PRINT @resCode + char(9)
--PRINT @message + char(9)
-- ma vc khong hop le
SET @maVC = 'VC0006';
EXEC sp_thanhToanVoucher '133',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @maVC, @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- khách hàng k tồn tại
SET @maKH = 'KH0011';
EXEC sp_thanhToanVoucher '134',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @maVC,  @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- dnghieep k tồn tại
SET @maDN = 'DN0011';
SET @maKH = 'KH0001';
EXEC sp_thanhToanVoucher '134',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @maVC,  @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- loai gd k tồn tại
SET @maDN = 'DN0001';
SET @maLoaiGD = 'LG71';
EXEC sp_thanhToanVoucher '138',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL,  @maVC, @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- gia trị gd 1
--giao dich nay thanh cong nhung khong co diem tich luy
SET @maLoaiGD = 'LGD1';
SET @giaTriGD = 1;
--EXEC sp_thanhToanVoucher '134',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @maVC,  @resCode OUTPUT, @message output
--PRINT @resCode + char(9)
--PRINT @message + char(9)
-- gia tri gd <0 
SET @maLoaiGD = 'LGD1';
SET @giaTriGD = -1;
EXEC sp_thanhToanVoucher '135',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL,  @maVC, @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- số điểm tl <0
SET @giaTriGD = 50000;
SET @soDiemTL = -1;
EXEC sp_thanhToanVoucher '135',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL,  @maVC, @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)
-- số điểm tl null

-- số điểm tl =0
SET @giaTriGD = 50000;
SET @soDiemTL = 0;
EXEC sp_thanhToanVoucher '135',@maKH, @maDN, @maLoaiGD, @giaTriGD, @thongTinGD, @ghiChu, @soDiemTL, @maVC,  @resCode OUTPUT, @message output
PRINT @resCode + char(9)
PRINT @message + char(9)


----viet test cho bai 3
--SELECT * FROM func_layDiemTichLuyRieng('KH0001');

--test func_layMaGiaoDichMoi
SELECT dbo.func_layMaGiaoDichMoi()